# @Time : 2020/6/25 14:26
# @Author : Fioman 
# @Phone : 13149920693
"""
Unicode标准把字符的标识和具体的直接表述进行了如下的明确的区分.
1> 字符的标识,即码位,是0~1114111的数字(十进制),在Unicode标准中以4-6个十六进制数字表示,而且加前缀"U+".
例如字母A的码位是U+0041,欧元符号的码位是U+20AC

2> 字符的具体表述取决于使用的编码.编码是在码位和直接序列之间转换时使用的算法.在UTF-8编码中,A(U+0041)的码位编码成单个的直接\x41,
而在UTF-16LE编码中的编码成两个直接\x41\x00.

把码位转换成字节序列的过程是编码,把字节序列转换成码位的过程是解码.
"""
# 编码和解码
s = 'café'
print("len = {}".format(len(s)))

b = s.encode('utf-8')
print("b = {},len(b) = {}".format(b, len(b)))

c = b.decode("utf-8")
print("c = {},len(c) = {}".format(c,len(c)))

"""
1> 不可变序列bytes和可变序列bytearray对象的各个元素都是介于0~255之间的整数.然而,二进制序列的切片始终是同一类型的二进制序列.
    包含长度为1的切片.
"""

cafe = bytes("café",encoding="utf-8")
print(type(cafe),cafe)
print("cafe[0] = {}".format(cafe[0]))
print("cafe[:1] = {}".format(cafe[:1]))
cafe_array = bytearray(cafe)
print("cafe_array = {}".format(cafe_array))
print("cafe_array[-1:] = {}".format(cafe_array[-1:]))
